package com.mxpio.erp.common.enums;

public interface NoticeStatusEnums {

	/**
	 * 通知单状态
	 *
	 */
	enum NoticeStatus {
		DRAFT("0", "草稿"), CREATE("10", "开立"), CONFIRM("20", "已确认"),
		REJECT("99", "已拒绝");//20221009 wpp新增 DRAFT项，解决资产模块由通知单手动新增，需要提交操作的需求，新增默认为草稿，提交操作后变为开立状态

		NoticeStatus(String statusCode, String statusName) {
			this.statusCode = statusCode;
			this.statusName = statusName;
		}

		private String statusCode;

		private String statusName;

		public String getStatusCode() {
			return statusCode;
		}

		public void setStatusCode(String statusCode) {
			this.statusCode = statusCode;
		}

		public String getStatusName() {
			return statusName;
		}

		public void setStatusName(String statusName) {
			this.statusName = statusName;
		}
	}
	
	/**
	 * 通知单类型
	 *
	 */
	enum NoticeType {
		INIT_IN("00", "初始入库"),
		PO_IN("10", "材料入库"),
		MO_M_IN("15", "生产退料"),
		OO_M_IN("18", "委外退料"),
		DP_IN("16", "生产不良品退料"),
		OODP_IN("19", "委外不良品退料"),
		SO_OUT("20", "销售出库"),
		MO_IN("30", "生产入库"),

		OO_IN("31", "委外入库"),
		SO_IN("35", "销售退货"),
		PO_OUT("40", "采购退货"),
		MO_M_OUT("41", "生产领料"),
		OO_M_OUT("45", "委外领料"),
		MO_M_REOUT("42", "生产补料"),
		OO_M_REOUT("46", "委外补料"),
		SOA_OUT("47", "报废出库"),
		AO_IN("60", "调整入库"),

		SP_IN("61", "备件（材料）入库"),
		SPP_OUT("62", "备件领料出库（维修）"),//设备维修
		SPR_IN("63", "备件退料入库（维修）"),//设备维修
		UPP_OUT("64", "备件领料出库（保养）"),//设备保养
		UPP_IN("65", "备件退料入库（保养）"),//设备保养
		QO_OUT("50", "质检让步接收出"),
		QO_IN("51", "质检让步接收入"),
		//不良品处理，返货、报废使用决策对原不合格批次拆批时，需要对源批拆批，对应库存转移
		QREW_OUT("52", "不良品处理-返工-转移出"),
		QREW_IN("53", "不良品处理-返工-转移入"),
		QSCR_OUT("54", "不良品处理-报废-转移出"),
		QSCR_IN("55", "不良品处理-报废-转移入"),

		PO_DEF_OUT("56", "采购不合格退货"),


		FP_IN("57", "送货计划入"),


		IIA_OUT("58", "库存质检申请-转移出"),
		IIA_IN("59", "库存质检申请-转移入"),
		TO_IN("70", "调拨入库"),
		RO_IN("80", "红冲入库"),
		TO_OUT("90", "调拨出库"),
		AO_OUT("100", "调整出库"),
		RO_OUT("110", "红冲出库"),
		DO_IN("44", "组织需求领料"),
		DO_SUP("48", "组织需求补料"),
		DO_DP("49", "组织需求不良退料"),
		DO_OUT("17", "组织需求退料");

		NoticeType(String code, String name) {
			this.code = code;
			this.name = name;
		}

		private String code;

		private String name;

		public String getCode() {
			return code;
		}

		public void setCode(String code) {
			this.code = code;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}
	}
}
